
package br.ucb.cesbdao.janelas;


import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.SQLException;
import java.util.regex.PatternSyntaxException;

import javax.swing.ListSelectionModel;
import javax.swing.RowFilter;
import javax.swing.table.TableRowSorter;

import org.apache.log4j.Logger;

import br.ucb.cesbdao.enuns.EnumFormatos;
import br.ucb.cesbdao.enuns.EnumLabelAndBotao;
import br.ucb.cesbdao.enuns.EnumMensagens;
import br.ucb.cesbdao.enuns.EnumResources;
import br.ucb.cesbdao.enuns.EnumTipoTrabalhador;
import br.ucb.cesbdao.enuns.EnumTitulo;
import br.ucb.cesbdao.model.TrabalhadorModel;
import br.ucb.cesbdao.model.impl.TrabalhadorModelImpl;
import br.ucb.cesbdao.modeloTabelas.ModeloTabelaAtendente;
import br.ucb.cesbdao.servicos.Servicos;
import br.ucb.cesbdao.visao.Visao;

@SuppressWarnings("serial")
public class JanelaBuscaAtendente extends javax.swing.JFrame implements KeyListener{
	private static Integer idTrabalhador;
	private ModeloTabelaAtendente modeloBuscaTrabalhador = new ModeloTabelaAtendente();
	static Logger logger = Servicos.carregaLog(JanelaBuscaAtendente.class);

	public JanelaBuscaAtendente() throws SQLException, ClassNotFoundException {
		TrabalhadorModel model = new TrabalhadorModelImpl();
		initComponents();
		setResizable(false);
		txt_cpfBuscaTrabalhador.setVisible(false);
		char tipo = Janela.getTipoDeTrabalhador().charAt(0);
        switch (tipo) {
		case 'A':
			modeloBuscaTrabalhador.setTrabalhadors(model.consultaAllTrabalhadorByTipo(EnumTipoTrabalhador.APOIO.getTipo()));
			break;
		case 'F':
			modeloBuscaTrabalhador.setTrabalhadors(model.consultaAllTrabalhadorByTipo(EnumTipoTrabalhador.AFI.getTipo()));
		}
        this.setTitle(EnumTitulo.TITULO_BUSCA_ATENDENTE.getTitulo());
        painelBuscaTrabalhador.setVisible(true);
        tabelaBuscaTrabalhador.getTableHeader().setReorderingAllowed(false);
		tabelaBuscaTrabalhador.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tabelaBuscaTrabalhador.setAutoCreateRowSorter(true);
		
	}

	private void initComponents() {

		bg_filtrarPorPaciente = new javax.swing.ButtonGroup();
		painelBuscaTrabalhador = new javax.swing.JPanel();
		painelFiltroBuscaTrabalhador = new javax.swing.JPanel();
		painelFiltrarPor = new javax.swing.JPanel();
		rb_filtrarPorCPF = new javax.swing.JRadioButton();
		rb_filtrarPorNome = new javax.swing.JRadioButton();
		painelCamadasFiltro = new javax.swing.JLayeredPane();
		txt_nomeBuscaTrabalhador = new javax.swing.JTextField();
		txt_cpfBuscaTrabalhador = new javax.swing.JFormattedTextField();
		painelResultadosBuscaTrabalhador = new javax.swing.JPanel();
		jScrollPane1 = new javax.swing.JScrollPane();
		tabelaBuscaTrabalhador = new javax.swing.JTable();
		btn_selecionarBuscaTrabalhador = new javax.swing.JButton();
		btn_cancelarBuscaTrabalhador = new javax.swing.JButton();
		
		bg_filtrarPorPaciente.add(rb_filtrarPorCPF);
		bg_filtrarPorPaciente.add(rb_filtrarPorNome);

		setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
		setBounds(new java.awt.Rectangle(250, 25, 0, 0));

		painelFiltroBuscaTrabalhador.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.FILTRO.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font(EnumFormatos.FONTE_TAHOMA.getFormato(), 1, 12))); // NOI18N


		painelFiltrarPor.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.FILTRAR_POR.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font(EnumFormatos.FONTE_TAHOMA.getFormato(), 1, 11))); // NOI18N

		rb_filtrarPorCPF.setText(EnumLabelAndBotao.CPF.getTexto());
		rb_filtrarPorCPF.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				rb_filtrarPorCPFActionPerformed(evt);
			}
		});

		rb_filtrarPorNome.setSelected(true);
		rb_filtrarPorNome.setText(EnumLabelAndBotao.NOME.getTexto());
		rb_filtrarPorNome.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				rb_filtrarPorNomeActionPerformed(evt);
			}
		});

		javax.swing.GroupLayout painelFiltrarPorLayout = new javax.swing.GroupLayout(painelFiltrarPor);
		painelFiltrarPor.setLayout(painelFiltrarPorLayout);
		painelFiltrarPorLayout.setHorizontalGroup(
				painelFiltrarPorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(painelFiltrarPorLayout.createSequentialGroup()
						.addGap(19, 19, 19)
						.addGroup(painelFiltrarPorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
								.addComponent(rb_filtrarPorCPF)
								.addComponent(rb_filtrarPorNome))
								.addContainerGap(33, Short.MAX_VALUE))
		);
		painelFiltrarPorLayout.setVerticalGroup(
				painelFiltrarPorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(painelFiltrarPorLayout.createSequentialGroup()
						.addComponent(rb_filtrarPorCPF)
						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
						.addComponent(rb_filtrarPorNome)
						.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
		);

		txt_nomeBuscaTrabalhador.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.NOME.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font(EnumFormatos.FONTE_TAHOMA.getFormato(), 1, 11))); // NOI18N
		txt_nomeBuscaTrabalhador.addKeyListener(this);
		txt_nomeBuscaTrabalhador.setBounds(10, 10, 380, 70);
		painelCamadasFiltro.add(txt_nomeBuscaTrabalhador, javax.swing.JLayeredPane.DEFAULT_LAYER);

		txt_cpfBuscaTrabalhador.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.CPF.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font(EnumFormatos.FONTE_TAHOMA.getFormato(), 1, 11))); // NOI18N
		try {
			txt_cpfBuscaTrabalhador.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter(EnumFormatos.CPF.getFormato())));
		} catch (java.text.ParseException ex) {
			logger.error(ex.getMessage());
			ex.printStackTrace();
		}
		txt_cpfBuscaTrabalhador.setBounds(10, 10, 180, 70);
		txt_cpfBuscaTrabalhador.addKeyListener(this);
		painelCamadasFiltro.add(txt_cpfBuscaTrabalhador, javax.swing.JLayeredPane.DEFAULT_LAYER);

		javax.swing.GroupLayout painelFiltroBuscaTrabalhadorLayout = new javax.swing.GroupLayout(painelFiltroBuscaTrabalhador);
		painelFiltroBuscaTrabalhador.setLayout(painelFiltroBuscaTrabalhadorLayout);
		painelFiltroBuscaTrabalhadorLayout.setHorizontalGroup(
				painelFiltroBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(painelFiltroBuscaTrabalhadorLayout.createSequentialGroup()
						.addContainerGap()
						.addComponent(painelFiltrarPor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
						.addGap(3, 3, 3)
						.addComponent(painelCamadasFiltro, javax.swing.GroupLayout.PREFERRED_SIZE, 400, javax.swing.GroupLayout.PREFERRED_SIZE)
						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
						
						.addGap(118, 118, 118))
		);
		painelFiltroBuscaTrabalhadorLayout.setVerticalGroup(
				painelFiltroBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(painelFiltroBuscaTrabalhadorLayout.createSequentialGroup()
						.addGroup(painelFiltroBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
								.addComponent(painelCamadasFiltro, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)
								.addGroup(painelFiltroBuscaTrabalhadorLayout.createSequentialGroup()
										.addGap(24, 24, 24)
										)
										.addComponent(painelFiltrarPor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
										.addContainerGap())
		);

		painelResultadosBuscaTrabalhador.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.RESULTADOS.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font(EnumFormatos.FONTE_TAHOMA.getFormato(), 1, 12))); // NOI18N

		tabelaBuscaTrabalhador.setModel(modeloBuscaTrabalhador);

		jScrollPane1.setViewportView(tabelaBuscaTrabalhador);

		btn_selecionarBuscaTrabalhador.setIcon(new javax.swing.ImageIcon(getClass().getResource(EnumResources.ICONE_SALVAR.getCaminho()))); // NOI18N
		btn_selecionarBuscaTrabalhador.setText(EnumLabelAndBotao.SELECIONAR.getTexto());
		btn_selecionarBuscaTrabalhador.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				btn_selecionarBuscaTrabalhadorActionPerformed(evt);
			}
		});

		btn_cancelarBuscaTrabalhador.setIcon(new javax.swing.ImageIcon(getClass().getResource(EnumResources.ICONE_CANCELAR.getCaminho()))); // NOI18N
		btn_cancelarBuscaTrabalhador.setText(EnumLabelAndBotao.CANCELAR.getTexto());
		btn_cancelarBuscaTrabalhador.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				btn_cancelarBuscaTrabalhadorActionPerformed(evt);
			}
		});

		javax.swing.GroupLayout painelResultadosBuscaTrabalhadorLayout = new javax.swing.GroupLayout(painelResultadosBuscaTrabalhador);
		painelResultadosBuscaTrabalhador.setLayout(painelResultadosBuscaTrabalhadorLayout);
		painelResultadosBuscaTrabalhadorLayout.setHorizontalGroup(
				painelResultadosBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(painelResultadosBuscaTrabalhadorLayout.createSequentialGroup()
						.addContainerGap()
						.addGroup(painelResultadosBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
								.addGroup(painelResultadosBuscaTrabalhadorLayout.createSequentialGroup()
										.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 749, Short.MAX_VALUE)
										.addContainerGap())
										.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelResultadosBuscaTrabalhadorLayout.createSequentialGroup()
												.addComponent(btn_selecionarBuscaTrabalhador)
												.addGap(27, 27, 27)
												.addComponent(btn_cancelarBuscaTrabalhador)
												.addGap(256, 256, 256))))
		);
		painelResultadosBuscaTrabalhadorLayout.setVerticalGroup(
				painelResultadosBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelResultadosBuscaTrabalhadorLayout.createSequentialGroup()
						.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 330, Short.MAX_VALUE)
						.addGap(11, 11, 11)
						.addGroup(painelResultadosBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
								.addComponent(btn_selecionarBuscaTrabalhador)
								.addComponent(btn_cancelarBuscaTrabalhador))
								.addContainerGap())
		);

		javax.swing.GroupLayout painelBuscaTrabalhadorLayout = new javax.swing.GroupLayout(painelBuscaTrabalhador);
		painelBuscaTrabalhador.setLayout(painelBuscaTrabalhadorLayout);
		painelBuscaTrabalhadorLayout.setHorizontalGroup(
				painelBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(painelBuscaTrabalhadorLayout.createSequentialGroup()
						.addContainerGap()
						.addGroup(painelBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
								.addComponent(painelResultadosBuscaTrabalhador, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
								.addComponent(painelFiltroBuscaTrabalhador, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 781, javax.swing.GroupLayout.PREFERRED_SIZE))
								.addContainerGap())
		);
		painelBuscaTrabalhadorLayout.setVerticalGroup(
				painelBuscaTrabalhadorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(painelBuscaTrabalhadorLayout.createSequentialGroup()
						.addComponent(painelFiltroBuscaTrabalhador, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
						.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
						.addComponent(painelResultadosBuscaTrabalhador, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
						.addContainerGap())
		);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(
				layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(layout.createSequentialGroup()
						.addComponent(painelBuscaTrabalhador, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
						.addContainerGap())
		);
		layout.setVerticalGroup(
				layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(layout.createSequentialGroup()
						.addContainerGap()
						.addComponent(painelBuscaTrabalhador, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
						.addContainerGap())
		);

		pack();
	}

//	public String getCPFTrabalhadorTabela(){
//		return modeloBuscaTrabalhador.getTrabalhadorAt(tabelaBuscaTrabalhador.getSelectedRow()).getCpf();
//	}

	private void btn_selecionarBuscaTrabalhadorActionPerformed(java.awt.event.ActionEvent evt) {
		if(tabelaBuscaTrabalhador.getSelectedRow() == -1){
			Visao.showMessageWarning(EnumMensagens.MSG_ALERTA_AA_N_SELECIONADO.getMensagem(), "Aviso do sistema");
			return;
		}
		setIdTrabalhador(modeloBuscaTrabalhador.getTrabalhadorAt(tabelaBuscaTrabalhador.getSelectedRow()).getId());
		if(Janela.getPainelCadastroGrupo().isShowing())
			Janela.setTxt_idTrabalhadorGrupo(modeloBuscaTrabalhador.getTrabalhadorAt(tabelaBuscaTrabalhador.getSelectedRow()).getNome());
		if(Janela.getPainelVincularTrabalhadorGrupo().isShowing())
			Janela.setTxt_idTrabalhadorVinculaGrupo(modeloBuscaTrabalhador.getTrabalhadorAt(tabelaBuscaTrabalhador.getSelectedRow()).getNome());
		if(JanelaListaGrupoByAtendente.isBuscando()){
			Janela.setIdTrabalhadorVinculaGrupo(modeloBuscaTrabalhador.getTrabalhadorAt(tabelaBuscaTrabalhador.getSelectedRow()).getId());
			JanelaListaGrupoByAtendente.setTxt_busca(modeloBuscaTrabalhador.getTrabalhadorAt(tabelaBuscaTrabalhador.getSelectedRow()).getNome());
		}
		if(Janela.getPainelCadastraAtendimento().isShowing()){			
			Visao.showMessage(EnumMensagens.MSG_CONFIRMACAO_ENTRADA_SUCESSO.getMensagem(), "Aviso do Sistema");
		}
		this.setVisible(false);

	}

	private void btn_cancelarBuscaTrabalhadorActionPerformed(java.awt.event.ActionEvent evt) {
		setVisible(false);
	}

	private void pesquisarBuscaTrabalhadorActionPerformed() {
		String busca = null;
		final TableRowSorter<ModeloTabelaAtendente> sorter = new TableRowSorter<ModeloTabelaAtendente>(modeloBuscaTrabalhador);
		if(rb_filtrarPorCPF.isSelected())
			busca = Servicos.unFormat(txt_cpfBuscaTrabalhador.getText());
		else
			busca = txt_nomeBuscaTrabalhador.getText();
		tabelaBuscaTrabalhador.setRowSorter(sorter);
		if (busca.isEmpty())
			sorter.setRowFilter(null);
		else{
			try{
				sorter.setRowFilter(RowFilter.regexFilter("(?i)"+busca, 0, 1));
			}catch (PatternSyntaxException ex) {
				logger.error(ex.getMessage());
				Visao.showMessageWarning(EnumMensagens.MSG_ALERTA_FILTRAR.getMensagem(), "Aviso do Sistema");
			}
		}
	}


	private void rb_filtrarPorCPFActionPerformed(java.awt.event.ActionEvent evt) {
		txt_nomeBuscaTrabalhador.setVisible(false);
		txt_cpfBuscaTrabalhador.setText("");
		txt_cpfBuscaTrabalhador.setVisible(true);
	}

	private void rb_filtrarPorNomeActionPerformed(java.awt.event.ActionEvent evt) {
		txt_cpfBuscaTrabalhador.setVisible(false);
		txt_nomeBuscaTrabalhador.setVisible(true);
		txt_nomeBuscaTrabalhador.setText("");
	}


	public static Integer getIdTrabalhador() {
		return idTrabalhador;
	}

	public static void setIdTrabalhador(Integer idTrabalhador) {
		JanelaBuscaAtendente.idTrabalhador = idTrabalhador;
	}



	private javax.swing.ButtonGroup bg_filtrarPorPaciente;
	private javax.swing.JButton btn_cancelarBuscaTrabalhador;
	private javax.swing.JButton btn_selecionarBuscaTrabalhador;
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JPanel painelBuscaTrabalhador;
	private javax.swing.JLayeredPane painelCamadasFiltro;
	private javax.swing.JPanel painelFiltrarPor;
	private javax.swing.JPanel painelFiltroBuscaTrabalhador;
	private javax.swing.JPanel painelResultadosBuscaTrabalhador;
	private javax.swing.JRadioButton rb_filtrarPorCPF;
	private javax.swing.JRadioButton rb_filtrarPorNome;
	private javax.swing.JTable tabelaBuscaTrabalhador;
	private javax.swing.JFormattedTextField txt_cpfBuscaTrabalhador;
	private javax.swing.JTextField txt_nomeBuscaTrabalhador;

	@Override
	public void keyPressed(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyReleased(KeyEvent e) {
		pesquisarBuscaTrabalhadorActionPerformed();
		
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}


}
